﻿
#include "Engine/common.h"
#include "Engine/uimgr.h"
#include "Engine/ControlDef.h"
#include "strid.h"
#include "AppUI.h"
#include "设置模块.h"
#include "DNF定义.h"
#include "DNF对象定义.h"

//游戏内字体不是完全纯色，上下有微小的差异，可能是渲染方式或透明度影响
//太初是渐变色，取中间的颜色
enum DNF字体颜色
{
	普通颜色=0xFFFFFEFF,
	高级颜色=0xFF69D5EE,
	稀有颜色=0xFFB26AFF,
	神器颜色=0xFFFE01FF,
	传说颜色=0xFFFF7801,
	史诗颜色=0xFFFFB400,
	太初颜色=0xFF5ADBC0,

	增幅颜色=0xFFFE01FE,
	锻造颜色=0xFFB26CFE,
	强化颜色=0xFF67D6EC,
	提升颜色=0xFF4AA256,
	降低颜色=0xFFBC3232,

	套装颜色=0xFF96E433,
	附魔颜色=0xFF68EEA8,
	攻强颜色=0xFFFEB500,
	部位颜色=0xFFC0A336,
	品级颜色=0xFFFFF000,
	描述颜色=0xFF857750,
	高亮描述颜色=0xFFD5C691,
};

BOOL 装备选择变化=FALSE;
int 当前选择部位=-1;
int 当前选择装备=-1;

CImage* Ctrl装备详情面板;

CImage* Ctrl装备图标;
CLineLabel* Ctrl装备名称;
CLineLabel* Ctrl装备部位;
CLineLabel* Ctrl强化力智加成;
CLineLabel* Ctrl强化三攻加成;
CLineLabel* Ctrl锻造独立加成;
CLineLabel* Ctrl条件状态;

CVScrollView* Ctrl装备描述底;
CLabel* Ctrl装备描述;

CImage* Ctrl自定义底;
CSpListBox* Ctrl自定义列表;

CHTabView* Ctrl武器贴膜底;
CSpListBox* Ctrl武器贴膜列表1;
CSpListBox* Ctrl武器贴膜列表2;
CSpListBox* Ctrl武器贴膜列表3;

CHTabView* Ctrl传说贴膜底;
CSpListBox* Ctrl传说贴膜列表1;
CSpListBox* Ctrl传说贴膜列表2;
CSpListBox* Ctrl传说贴膜列表3;

int 获取装备图标ResId(int 部位,int 装备区索引,BOOL 灰色图标);	//UI装备区.cpp
WCHAR* 获取装备名称(int 部位,int 装备区索引);					//UI装备区.cpp
DNF品质 获取装备品质(int 部位,int 装备区索引);					//UI装备区.cpp
int 自定义词条变更回调(UIControl* CtrlObj,UIEvent_t UIEvent,PVOID Param1,PVOID Param2);
int 武器贴膜词条变更回调(UIControl* CtrlObj,UIEvent_t UIEvent,PVOID Param1,PVOID Param2);
int 传说贴膜词条变更回调(UIControl* CtrlObj,UIEvent_t UIEvent,PVOID Param1,PVOID Param2);

//大小380*760
void 详细构建_装备详情面板(int PageId,CImage* Ctrl装备详情面板)
{
	::Ctrl装备详情面板=Ctrl装备详情面板;

	const int 左右边距=20;
	const int 上下边距=20;

	int NextX=左右边距;
	int NextY=上下边距;
	SetCreateControlParam(NextX,NextY,Ctrl装备详情面板,PageId_Setting);
	Ctrl装备图标=EasyCreateImage(CID_装备详情_图标,28,28);
	NextX+=28+10;
	NextY=上下边距-2;

	SetCreateControlParam(NextX,NextY,Ctrl装备详情面板,PageId_Setting);
	Ctrl装备名称=EasyCreateLineLabel(CID_装备详情_名称,380-16-左右边距*2-28-10,CLineLabel::MinHeight,NULL);
	NextY+=14+4;

	SetCreateControlParam(NextX,NextY,Ctrl装备详情面板,PageId_Setting);
	Ctrl装备部位=EasyCreateLineLabel(CID_装备详情_部位,380-16-左右边距*2-28-10,CLineLabel::MinHeight,NULL);
	NextX=左右边距;
	NextY+=14+4;

	SetCreateControlParam(NextX,NextY,Ctrl装备详情面板,PageId_Setting);
	Ctrl强化力智加成=EasyCreateLineLabel(CID_装备详情_强化力智加成,380-16-左右边距*2,CLineLabel::MinHeight,NULL);
	NextY+=14+4;

	SetCreateControlParam(NextX,NextY,Ctrl装备详情面板,PageId_Setting);
	Ctrl强化三攻加成=EasyCreateLineLabel(CID_装备详情_强化三攻加成,380-16-左右边距*2,CLineLabel::MinHeight,NULL);
	NextY+=14+4;

	SetCreateControlParam(NextX,NextY,Ctrl装备详情面板,PageId_Setting);
	Ctrl锻造独立加成=EasyCreateLineLabel(CID_装备详情_锻造独立加成,380-16-左右边距*2,CLineLabel::MinHeight,NULL);
	NextY+=14+4;

	SetCreateControlParam(NextX,NextY,Ctrl装备详情面板,PageId_Setting);
	Ctrl条件状态=EasyCreateLineLabel(CID_装备详情_条件状态,380-16-左右边距*2,CLineLabel::MinHeight,NULL);
	NextX=左右边距;
	NextY+=14+16;

	//Ctrl装备名称->SetBackColor(0x8000FF00);
	//Ctrl装备部位->SetBackColor(0x8000FF00);
	//Ctrl强化力智加成->SetBackColor(0x8000FF00);
	//Ctrl强化三攻加成->SetBackColor(0x8000FF00);
	//Ctrl锻造独立加成->SetBackColor(0x8000FF00);
	//Ctrl条件状态->SetBackColor(0x8000FF00);

	加载所有装备描述();

	//装备描述
	SetCreateControlParam(NextX,NextY,Ctrl装备详情面板,PageId_Setting);
	Ctrl装备描述底=EasyCreateScrollView(CID_装备详情_装备描述底,380-16-左右边距*2,760-NextY-上下边距,1500);
	Ctrl装备描述底->SetVisible(FALSE);
	SetCreateControlParam(0,0,Ctrl装备描述底,PageId_Setting);
	Ctrl装备描述=EasyCreateLabel(CID_装备详情_装备描述标签,380-16-左右边距*2-16,1500,L"装备描述");
	Ctrl装备描述->SetPadding(10);
	Ctrl装备描述->SetBackColor(0x80FFFFFF);
	Ctrl装备描述->SetTextColor(描述颜色);
	Ctrl装备描述->SetLineSpace(5);
	
	//自定义词条选择
	//每个部位的词条都不同，构建时不添加
	SetCreateControlParam(NextX,NextY,Ctrl装备详情面板,PageId_Setting);
	Ctrl自定义底=EasyCreateImage(CID_装备详情_自定义选择底,380-16-左右边距*2,760-NextY-上下边距);
	Ctrl自定义底->SetVisible(FALSE);
	SetCreateControlParam(0,0,Ctrl自定义底,PageId_Setting);
	Ctrl自定义列表=EasyCreateSpListBox(CID_装备详情_自定义列表,380-16-左右边距*2,760-NextY-上下边距);
	Ctrl自定义列表->SetBackImage(EasyLoadImageR(RID_列表框背景),3);
	Ctrl自定义列表->SetSelectLimit(4);
	Ctrl自定义列表->SetEventHandler(自定义词条变更回调);

	//巴卡尔武器贴膜词条选择
	SetCreateControlParam(NextX,NextY,Ctrl装备详情面板,PageId_Setting);
	Ctrl武器贴膜底=EasyCreateTabView(CID_装备详情_武器贴膜底,380-16-左右边距*2,760-NextY-上下边距);
	
	Ctrl武器贴膜列表1=new CSpListBox(GetCtrlId(CID_装备详情_武器贴膜列表1),0,0,380-16-左右边距*2,760-NextY-上下边距-CHTabView::TabHeight);
	Ctrl武器贴膜底->AppendTabPage(Ctrl武器贴膜列表1,L"词条1");
	Ctrl武器贴膜列表1->SetBackImage(EasyLoadImageR(RID_列表框背景),3);
	Ctrl武器贴膜列表1->SetSelectLimit(1);
	Ctrl武器贴膜列表1->SetUserData((PVOID)0);
	Ctrl武器贴膜列表1->SetEventHandler(武器贴膜词条变更回调);

	Ctrl武器贴膜列表2=new CSpListBox(GetCtrlId(CID_装备详情_武器贴膜列表2),0,0,380-16-左右边距*2,760-NextY-上下边距-CHTabView::TabHeight);
	Ctrl武器贴膜底->AppendTabPage(Ctrl武器贴膜列表2,L"词条2");
	Ctrl武器贴膜列表2->SetBackImage(EasyLoadImageR(RID_列表框背景),3);
	Ctrl武器贴膜列表2->SetSelectLimit(1);
	Ctrl武器贴膜列表2->SetUserData((PVOID)1);
	Ctrl武器贴膜列表2->SetEventHandler(武器贴膜词条变更回调);

	Ctrl武器贴膜列表3=new CSpListBox(GetCtrlId(CID_装备详情_武器贴膜列表3),0,0,380-16-左右边距*2,760-NextY-上下边距-CHTabView::TabHeight);
	Ctrl武器贴膜底->AppendTabPage(Ctrl武器贴膜列表3,L"龙焰词条");
	Ctrl武器贴膜列表3->SetBackImage(EasyLoadImageR(RID_列表框背景),3);
	Ctrl武器贴膜列表3->SetSelectLimit(1);
	Ctrl武器贴膜列表3->SetUserData((PVOID)2);
	Ctrl武器贴膜列表3->SetEventHandler(武器贴膜词条变更回调);

	int Id=0;	//80个，不会变化
	std::vector<装备词条描述_t*>::iterator it;
	for (it=装备词条描述文本[装备词条描述武器贴膜].begin();it!=装备词条描述文本[装备词条描述武器贴膜].end();it++)
	{
		装备词条描述_t* 装备词条描述文本=*it;
		Ctrl武器贴膜列表1->CreateItem(Id,装备词条描述文本->Num);
		Ctrl武器贴膜列表2->CreateItem(Id,装备词条描述文本->Num);
		for (int i=0;i<装备词条描述文本->Num;i++)
		{
			Ctrl武器贴膜列表1->SetItemContent(Id,i,装备词条描述文本->Desc[i],0xFF400040);
			Ctrl武器贴膜列表2->SetItemContent(Id,i,装备词条描述文本->Desc[i],0xFF400040);
		}
		Id++;
	}
	Ctrl武器贴膜列表1->ApplyItemChange();
	Ctrl武器贴膜列表2->ApplyItemChange();

	Id=0;	//80个，不会变化
	for (it=装备词条描述文本[装备词条描述武器贴膜龙焰].begin();it!=装备词条描述文本[装备词条描述武器贴膜龙焰].end();it++)
	{
		装备词条描述_t* 装备词条描述文本=*it;
		Ctrl武器贴膜列表3->CreateItem(Id,装备词条描述文本->Num);
		for (int i=0;i<装备词条描述文本->Num;i++)
		{
			Ctrl武器贴膜列表3->SetItemContent(Id,i,装备词条描述文本->Desc[i],0xFF400040);
		}
		Id++;
	}
	Ctrl武器贴膜列表3->ApplyItemChange();


	//传说贴膜词条选择
	SetCreateControlParam(NextX,NextY,Ctrl装备详情面板,PageId_Setting);
	Ctrl传说贴膜底=EasyCreateTabView(CID_装备详情_传说贴膜底,380-16-左右边距*2,760-NextY-上下边距);

	Ctrl传说贴膜列表1=new CSpListBox(GetCtrlId(CID_装备详情_传说贴膜列表1),0,0,380-16-左右边距*2,760-NextY-上下边距-CHTabView::TabHeight);
	Ctrl传说贴膜底->AppendTabPage(Ctrl传说贴膜列表1,L"词条1");
	Ctrl传说贴膜列表1->SetBackImage(EasyLoadImageR(RID_列表框背景),3);
	Ctrl传说贴膜列表1->SetSelectLimit(1);
	Ctrl传说贴膜列表1->SetUserData((PVOID)0);
	Ctrl传说贴膜列表1->SetEventHandler(传说贴膜词条变更回调);

	Ctrl传说贴膜列表2=new CSpListBox(GetCtrlId(CID_装备详情_传说贴膜列表2),0,0,380-16-左右边距*2,760-NextY-上下边距-CHTabView::TabHeight);
	Ctrl传说贴膜底->AppendTabPage(Ctrl传说贴膜列表2,L"词条2");
	Ctrl传说贴膜列表2->SetBackImage(EasyLoadImageR(RID_列表框背景),3);
	Ctrl传说贴膜列表2->SetSelectLimit(1);
	Ctrl传说贴膜列表2->SetUserData((PVOID)1);
	Ctrl传说贴膜列表2->SetEventHandler(传说贴膜词条变更回调);

	Ctrl传说贴膜列表3=new CSpListBox(GetCtrlId(CID_装备详情_传说贴膜列表3),0,0,380-16-左右边距*2,760-NextY-上下边距-CHTabView::TabHeight);
	Ctrl传说贴膜底->AppendTabPage(Ctrl传说贴膜列表3,L"词条3");
	Ctrl传说贴膜列表3->SetBackImage(EasyLoadImageR(RID_列表框背景),3);
	Ctrl传说贴膜列表3->SetSelectLimit(1);
	Ctrl传说贴膜列表3->SetUserData((PVOID)2);
	Ctrl传说贴膜列表3->SetEventHandler(传说贴膜词条变更回调);

	Id=0;	//44个，不会变化
	for (it=装备词条描述文本[装备词条描述传说贴膜].begin();it!=装备词条描述文本[装备词条描述传说贴膜].end();it++)
	{
		装备词条描述_t* 装备词条描述文本=*it;
		Ctrl传说贴膜列表1->CreateItem(Id,装备词条描述文本->Num);
		Ctrl传说贴膜列表2->CreateItem(Id,装备词条描述文本->Num);
		Ctrl传说贴膜列表3->CreateItem(Id,装备词条描述文本->Num);
		for (int i=0;i<装备词条描述文本->Num;i++)
		{
			Ctrl传说贴膜列表1->SetItemContent(Id,i,装备词条描述文本->Desc[i],0xFF400040);
			Ctrl传说贴膜列表2->SetItemContent(Id,i,装备词条描述文本->Desc[i],0xFF400040);
			Ctrl传说贴膜列表3->SetItemContent(Id,i,装备词条描述文本->Desc[i],0xFF400040);
		}
		Id++;
	}
	Ctrl传说贴膜列表1->ApplyItemChange();
	Ctrl传说贴膜列表2->ApplyItemChange();
	Ctrl传说贴膜列表3->ApplyItemChange();
}

void 自定义词条UI重设(DNF自定义系列 专属系列)
{
	Ctrl自定义列表->CancelAllSelect();
	Ctrl自定义列表->ClearItem();
	for (int Id=0;Id<96;Id++)
	{
		装备词条描述_t* 装备词条描述项=*(装备词条描述文本[装备词条描述自定义].begin()+当前选择部位*96+Id);
		Ctrl自定义列表->CreateItem(Id,装备词条描述项->Num);
		for (int i=0;i<装备词条描述项->Num;i++)
		{
			if (i==0)	//词条专属信息
				Ctrl自定义列表->SetItemContent(Id,i,装备词条描述项->Desc[i],0xFFA04080);
			else
				Ctrl自定义列表->SetItemContent(Id,i,装备词条描述项->Desc[i],0xFF400040);
		}
		//红皮可选择全部词条，其余只能选通用和专属(武器全视为通用系列)
		if (专属系列!=领域之主系列)
		{
			if (装备词条描述项->专属系列!=通用系列 && 装备词条描述项->专属系列!=专属系列)
				Ctrl自定义列表->ShowItem(Id,FALSE);
		}
	}
	Ctrl自定义列表->ApplyItemChange();

	for (int i=0;i<4;i++)
	{
		//系列-部位-词条序号
		int SettingIndex=设置_恩特系列上衣词条1+(当前选择装备-32)*4*11+(当前选择部位-上衣)*4+i;
		if (当前选择部位==武器)
			SettingIndex=设置_武器词条1+i;
		int Index=GetIndexSetting(SettingIndex);
		if (Index!=-1)
			Ctrl自定义列表->SelectItem(Index,TRUE);
	}
}







void 重置设置_装备详情面板()
{
	当前选择部位=-1;
	当前选择装备=-1;
	装备选择变化=FALSE;

	//最开始不会选择任何装备，面板为空
	//直到点击了装备面板的图标，会修改[当前选择部位]和[当前选择装备]，才会显示装备详情
	//设置项变化后，计算模块进行计算，回调 同步装备详情() 更新UI
	//如果选择的装备发生了变化，会重置ListBox的滚动条和TabView，这里不用处理

	//目前没有完全完成，装备属性的显示需要装备对象提供数据，还需要录入装备描述

}


void 退出清理_装备详情面板()
{
	清理所有装备描述();
}

//描述不会超过2000字
WCHAR StaticBuffer[2048];

void 同步装备详情()
{
	UI_AdjustState++;

	if (当前选择部位==-1 || 当前选择装备==-1)
	{
		Ctrl装备描述底->SetVisible(FALSE);
		Ctrl自定义底->SetVisible(FALSE);
		Ctrl武器贴膜底->SetVisible(FALSE);
		Ctrl传说贴膜底->SetVisible(FALSE);

		Ctrl装备图标->SetImage(NULL);
		Ctrl装备名称->SetText(L"未选中装备");
		Ctrl装备名称->SetTextColor(0xFF000000);
		Ctrl装备部位->SetText(NULL);
		Ctrl装备部位->SetTextColor(0xFF000000);
		Ctrl强化力智加成->SetText(NULL);
		Ctrl强化力智加成->SetTextColor(0xFF000000);
		Ctrl强化三攻加成->SetText(NULL);
		Ctrl强化三攻加成->SetTextColor(0xFF000000);
		Ctrl锻造独立加成->SetText(NULL);
		Ctrl锻造独立加成->SetTextColor(0xFF000000);
		Ctrl条件状态->SetText(NULL);
		Ctrl条件状态->SetTextColor(0xFF000000);
	}
	else
	{
		WCHAR Buf[200];
		if (当前选择部位>=上衣 && 当前选择部位<=武器)
		{
			//星团20和升级太初会增加武器打造属性，这里显示最终属性
			//而装备描述里的内容固定，显示原始属性
			BOOL 增幅打造=GetIndexSetting(设置_上衣强化类型+当前选择部位);
			int 强化等级=GetIndexSetting(设置_上衣强化等级+当前选择部位);
			if (增幅打造)
			{
				//增幅只有单项四维增加，使用计算模块的[当前职业对象]获取攻击类型
				WCHAR* 单属性名称=L"四维";
				if (当前职业对象->攻击类型==物理攻击类型)
					单属性名称=L"力量";
				else if (当前职业对象->攻击类型==魔法攻击类型)
					单属性名称=L"智力";
				swprintf(Buf,L"增幅+%d:  %s+%d",强化等级,单属性名称,伤害计算结果.装备结果[当前选择部位].打造四维加成);
				Ctrl强化力智加成->SetText(Buf);
				Ctrl强化力智加成->SetTextColor(增幅颜色);
				
				swprintf(Buf,L"增幅+%d:  物攻+%d/魔攻+%d/独立+%d",强化等级,伤害计算结果.装备结果[当前选择部位].打造物攻加成,
					伤害计算结果.装备结果[当前选择部位].打造魔攻加成,伤害计算结果.装备结果[当前选择部位].打造独立加成);
				Ctrl强化三攻加成->SetText(Buf);
				Ctrl强化三攻加成->SetTextColor(增幅颜色);	
			}
			else
			{
				swprintf(Buf,L"强化+%d:  四维+%d",强化等级,伤害计算结果.装备结果[当前选择部位].打造四维加成);
				Ctrl强化力智加成->SetText(Buf);
				Ctrl强化力智加成->SetTextColor(强化颜色);

				swprintf(Buf,L"强化+%d:  物攻+%d/魔攻+%d/独立+%d",强化等级,伤害计算结果.装备结果[当前选择部位].打造物攻加成,
					伤害计算结果.装备结果[当前选择部位].打造魔攻加成,伤害计算结果.装备结果[当前选择部位].打造独立加成);
				Ctrl强化三攻加成->SetText(Buf);
				Ctrl强化三攻加成->SetTextColor(强化颜色);	
			}
		}
		else
		{
			Ctrl强化三攻加成->SetText(L"无法强化");
			Ctrl强化三攻加成->SetTextColor(强化颜色);	
			Ctrl强化力智加成->SetText(L"无法强化");
			Ctrl强化力智加成->SetTextColor(强化颜色);
		}

		if (当前选择部位==武器)
		{
			int 锻造等级=GetIndexSetting(设置_武器锻造等级);
			int 辅助锻造四维=伤害计算结果.辅助锻造四维;
			if (辅助锻造四维!=0)
				swprintf(Buf,L"锻造+%d:  独立+%d  辅助四维+%d",锻造等级,伤害计算结果.装备结果[当前选择部位].锻造独立加成,辅助锻造四维);
			else
				swprintf(Buf,L"锻造+%d:  独立+%d",锻造等级,伤害计算结果.装备结果[当前选择部位].锻造独立加成);
			Ctrl锻造独立加成->SetText(Buf);
			Ctrl锻造独立加成->SetTextColor(锻造颜色);
		}
		else
		{
			Ctrl锻造独立加成->SetText(L"无法锻造");
			Ctrl锻造独立加成->SetTextColor(锻造颜色);
		}

		//信息由每个装备对象生成，如果时间不够，可能不添加相关信息，计算模块生成一个空格，什么也不显示
		if (伤害计算结果.装备结果[当前选择部位].满足条件)
		{
			//这个描述是装备对象生成的，可能直接就是"无触发条件"
			Ctrl条件状态->SetText(伤害计算结果.装备结果[当前选择部位].条件描述);
			Ctrl条件状态->SetTextColor(提升颜色);
		}
		else
		{
			Ctrl条件状态->SetText(伤害计算结果.装备结果[当前选择部位].条件描述);
			Ctrl条件状态->SetTextColor(降低颜色);
		}


		//如果选择的装备没变，只需要更新打造属性和条件
		//不支持词条提升率显示，否则还要取出每个词条的提升率，更新到ListBox里
		if (装备选择变化==FALSE)
		{
			UI_AdjustState--;
			return ;
		}
		装备选择变化=FALSE;

		int ResId=获取装备图标ResId(当前选择部位,当前选择装备,FALSE);
		Ctrl装备图标->SetImage(EasyLoadImageR(ResId,GetIconType(ResId)));

		WCHAR* Name=获取装备名称(当前选择部位,当前选择装备);
		Ctrl装备名称->SetText(Name);
		DNF品质 品质=获取装备品质(当前选择部位,当前选择装备);
		DWORD 品质颜色[拓展品质总数]={0xFF000000,高级颜色,稀有颜色,神器颜色,0,0xFFFF7801,0xFFFFB400,0,0,0xFF5ADBC0};
		Ctrl装备名称->SetTextColor(品质颜色[品质]);

		if (当前选择部位!=武器)
		{
			Ctrl装备部位->SetText(装备部位文本[当前选择部位]);
			Ctrl装备部位->SetTextColor(部位颜色);
		}
		else
		{
			if (当前选择装备==0)
			{
				Ctrl装备部位->SetText(L"武器");
				Ctrl装备部位->SetTextColor(部位颜色);
			}
			else if (CurrentJob==职业_光明骑士女)
			{
				int 武器类型=(当前选择装备-1)/14;
				WCHAR* 武器类型文本[5]={L"武器-光杖",L"武器-念珠",L"武器-图腾",L"武器-镰刀",L"武器-战斧"};
				Ctrl装备部位->SetText(武器类型文本[武器类型]);
				Ctrl装备部位->SetTextColor(部位颜色);
			}
			else if (CurrentJob==职业_流浪武士)
			{
				int 武器类型=(当前选择装备-1)/14;
				WCHAR* 武器类型文本[5]={L"武器-光剑",L"武器-巨剑",L"武器-短剑",L"武器-太刀",L"武器-钝器"};
				Ctrl装备部位->SetText(武器类型文本[武器类型]);
				Ctrl装备部位->SetTextColor(部位颜色);
			}
			else
			{
				Ctrl装备部位->SetText(装备部位文本[当前选择部位]);
				Ctrl装备部位->SetTextColor(部位颜色);
			}
		}
		

		//自定义位置固定，都是倒数6个
		if (当前选择部位>=上衣 && 当前选择部位<=耳环 && 当前选择装备>=32 && 当前选择装备<=37)
		{
			Ctrl装备描述底->SetVisible(FALSE);
			Ctrl自定义底->SetVisible(TRUE);
			Ctrl武器贴膜底->SetVisible(FALSE);
			Ctrl传说贴膜底->SetVisible(FALSE);

			//展示顺序与定义顺序一致，定义的第一个是 通用系列，排除
			DNF自定义系列 专属系列=(DNF自定义系列)(当前选择装备-32+1);
			自定义词条UI重设(专属系列);	
		}
		else if (当前选择部位==武器 && 当前选择装备%7==0 && 当前选择装备!=0)	//领域之主武器索引是7的倍数，跨越之忆武器索引是14的倍数
		{
			Ctrl装备描述底->SetVisible(FALSE);
			Ctrl自定义底->SetVisible(TRUE);
			Ctrl武器贴膜底->SetVisible(FALSE);
			Ctrl传说贴膜底->SetVisible(FALSE);

			//自定义武器都是领域之主系列
			自定义词条UI重设(领域之主系列);
		}
		else if (当前选择部位>=左槽贴膜 && 当前选择部位<=耳环贴膜 && 当前选择装备==18)	//传说贴膜位置固定，都是最后一个
		{
			Ctrl装备描述底->SetVisible(FALSE);
			Ctrl自定义底->SetVisible(FALSE);
			Ctrl武器贴膜底->SetVisible(FALSE);
			Ctrl传说贴膜底->SetVisible(TRUE);

			//传说贴膜词条固定，无需隐藏，直接加载设置即可
			Ctrl传说贴膜列表1->CancelAllSelect();
			Ctrl传说贴膜列表2->CancelAllSelect();
			Ctrl传说贴膜列表3->CancelAllSelect();
			Ctrl传说贴膜底->SetDisplayTab(0);

			int SettingIndex=(当前选择部位-左槽贴膜)*3+设置_左槽融合词条1;
			int Index=GetIndexSetting(SettingIndex);
			if (Index!=-1)
				Ctrl传说贴膜列表1->SelectItem(Index,TRUE);	
			
			SettingIndex=(当前选择部位-左槽贴膜)*3+设置_左槽融合词条2;
			Index=GetIndexSetting(SettingIndex);
			if (Index!=-1)
				Ctrl传说贴膜列表2->SelectItem(Index,TRUE);	

			SettingIndex=(当前选择部位-左槽贴膜)*3+设置_左槽融合词条3;
			Index=GetIndexSetting(SettingIndex);
			if (Index!=-1)
				Ctrl传说贴膜列表3->SelectItem(Index,TRUE);	
		}
		else if (当前选择部位==武器贴膜 && 当前选择装备==1)
		{
			Ctrl装备描述底->SetVisible(FALSE);
			Ctrl自定义底->SetVisible(FALSE);
			Ctrl武器贴膜底->SetVisible(TRUE);
			Ctrl传说贴膜底->SetVisible(FALSE);

			//武器贴膜词条固定，无需隐藏，直接加载设置即可
			Ctrl武器贴膜列表1->CancelAllSelect();
			Ctrl武器贴膜列表2->CancelAllSelect();
			Ctrl武器贴膜列表3->CancelAllSelect();
			Ctrl武器贴膜底->SetDisplayTab(0);

			int SettingIndex=设置_武器融合词条1;
			int Index=GetIndexSetting(SettingIndex);
			if (Index!=-1)
				Ctrl武器贴膜列表1->SelectItem(Index,TRUE);	
			
			SettingIndex=设置_武器融合词条2;
			Index=GetIndexSetting(SettingIndex);
			if (Index!=-1)
				Ctrl武器贴膜列表2->SelectItem(Index,TRUE);

			SettingIndex=设置_武器融合词条3;
			Index=GetIndexSetting(SettingIndex);
			if (Index!=-1)
				Ctrl武器贴膜列表3->SelectItem(Index,TRUE);	
		}
		else	//非自定义武器，非武器贴膜，非传说贴膜
		{
			//装备描述
			Ctrl装备描述底->SetVisible(TRUE);
			Ctrl自定义底->SetVisible(FALSE);
			Ctrl武器贴膜底->SetVisible(FALSE);
			Ctrl传说贴膜底->SetVisible(FALSE);

			//有武器时只显示14类，但有些武器的效果跟职业有关，因此描述文件仅加入28个武器描述，其余用不到
			if (当前选择部位==武器 && 当前选择装备!=0)
			{
				int 武器类型=(当前选择装备-1)%14;
				if (CurrentJob==职业_光明骑士女)
				{
					static WCHAR* 有描述武器名称[14]={L"吞噬本源光杖",L"胜负之役光杖",L"先驱者的光杖",L"怒战之意光杖",L"冰封之御光杖",L"寂灭之信光杖",L" ",
						L"焰:浴火之厄光杖",L"雨:蕴暖之春光杖",L"霜:秽染之雪光杖",L"风:郁沉之晓光杖",L"雷:镌刻之迹光杖",L"失衡:崩离边界光杖",L"跨越之忆光杖"};
					Name=有描述武器名称[武器类型];
				}
				else if (CurrentJob==职业_流浪武士)
				{
					static WCHAR* 有描述武器名称[14]={L"吞噬本源光剑",L"胜负之役光剑",L"先驱者的光剑",L"怒战之意光剑",L"冰封之御光剑",L"寂灭之信光剑",L" ",
						L"焰:浴火之厄光剑",L"雨:蕴暖之春光剑",L"霜:秽染之雪光剑",L"风:郁沉之晓光剑",L"雷:镌刻之迹光剑",L"失衡:崩离边界光剑",L"跨越之忆光剑"};
					Name=有描述武器名称[武器类型];
				}	
			}
			std::map<WCHAR*,WCHAR*,wstrless_t>::iterator it=普通装备描述查找容器.find(Name);
			if (it!=普通装备描述查找容器.end())
			{
				WCHAR* 描述文本=it->second;
				WCHAR* 套装描述文本=L"";
				std::map<WCHAR*,DNF装备对象*,wstrless_t>::iterator it2=(装备对象表_名称[装备类]).find(Name);
				if (it2!=(装备对象表_名称[装备类]).end())
				{
					//要求套装描述和索引一一对应，不能错漏
					int 套装索引=it2->second->套装索引;
					if (套装索引!=-1)
						套装描述文本=((装备词条描述文本[装备词条描述套装])[套装索引])->Desc[0];
				}
				swprintf(StaticBuffer,L"%s\r\n\r\n%s",描述文本,套装描述文本);
				Ctrl装备描述->SetText(StaticBuffer);
			}
			else
			{
				Ctrl装备描述->SetText(L"无装备描述");
			}
		}
	}
	UI_AdjustState--;
}


int 自定义词条变更回调(UIControl* CtrlObj,UIEvent_t UIEvent,PVOID Param1,PVOID Param2)
{
	if (UI_AdjustState!=0)
		return 0;

	if (UIEvent==EvtSpSelectChange)
	{
		int* SelectId=(int*)Param1;
		int SelectNum=(int)Param2;
		for (int i=0;i<4;i++)
		{
			int SettingIndex=设置_恩特系列上衣词条1+(当前选择装备-32)*4*11+(当前选择部位-上衣)*4+i;
			if (当前选择部位==武器)
				SettingIndex=设置_武器词条1+i;
			if (i<SelectNum)
				ChangeSettingByUI_Index(SettingIndex,SelectId[i]);
			else
				ChangeSettingByUI_Index(SettingIndex,-1);
		}
		SubmitSettingChange();
	}
	return 0;
}

int 武器贴膜词条变更回调(UIControl* CtrlObj,UIEvent_t UIEvent,PVOID Param1,PVOID Param2)
{
	if (UI_AdjustState!=0)
		return 0;
	if (UIEvent==EvtSpSelectChange)
	{
		int* SelectId=(int*)Param1;
		int SelectNum=(int)Param2;
		int SettingIndex=设置_武器融合词条1+(int)CtrlObj->GetUserData();
		if (SelectNum!=0)
			ChangeSettingByUI_Index(SettingIndex,SelectId[0]);
		else
			ChangeSettingByUI_Index(SettingIndex,-1);
		SubmitSettingChange();
	}
	return 0;
}

int 传说贴膜词条变更回调(UIControl* CtrlObj,UIEvent_t UIEvent,PVOID Param1,PVOID Param2)
{
	if (UI_AdjustState!=0)
		return 0;
	if (UIEvent==EvtSpSelectChange)
	{
		int* SelectId=(int*)Param1;
		int SelectNum=(int)Param2;
		int SettingIndex=设置_左槽融合词条1+(当前选择部位-左槽贴膜)*3+(int)CtrlObj->GetUserData();
		if (SelectNum!=0)
			ChangeSettingByUI_Index(SettingIndex,SelectId[0]);
		else
			ChangeSettingByUI_Index(SettingIndex,-1);
		SubmitSettingChange();
	}
	return 0;
}

